<?php

namespace Common\Controller;
use Think\Hook;

/**
 * cms控制器基类
 * Class BaseController
 * @package Common\Controller
 */
class BaseController extends \Think\Controller
{
    public $menu = array();
    public $channel = array();
    public $web = array();

    public function _initialize()
    {
        // 初始化 标签位
        Hook::listen('cms_init_start', $this);
        $this->_me = D('Common/User')->getMe(); // 在线用户
        $userRule = D('UserRule');
        $this->menu = $userRule->getModuleMenu(MODULE_NAME); // 获取菜单
        // 系统菜单 标签位
        Hook::listen('module_menu_check', $this->menu);
        $this->channel = $userRule->getModuleChannel(MODULE_NAME); // 获取栏目
        // 栏目检查 标签位
        Hook::listen('module_channel_check', $this->channel);
        $this->web['title'] = 'ICMS内容管理系统'; // 网页默认标题
        $this->_web('menu', $this->menu);
        $this->_web('channel', $this->channel);
        // 初始化完成 标签位
        Hook::listen('cms_init_end', $this);
    }

    /**
     * 页面变量设置
     * @param $key
     * @param string $val
     */
    protected function _web($key, $val = '')
    {
        if (!$val&&is_array($key)) {
            $this->web = array_merge($this->web, $key);
        } else {
            $this->web[$key] = $val;
        }
        $this->assign('_web', $this->web);
    }

    /**
     * 魔术方法
     * @param string $name
     * @param array $arguments
     * @return mixed
     */
    public function __call($name, $arguments)
    {
        if(preg_match('!^IS_!i', $name)) {
            // 请求判断运行
            if(constant($name)) {
                if(is_callable($arguments[0])) {
                    // 匿名函数
                    return $arguments[0]();// 判断是否为合法的可调用结构
                }
            }
        }else {
            parent::__call($name, $arguments);
        }
    }
}